//请根据每日 气温 列表 temperatures ，重新生成一个列表，要求其对应位置的输出为：要想观测到更高的气温，至少需要等待的天数。如果气温在这之后都不
//会升高，请在该位置用 0 来代替。 
//
// 
//
// 示例 1： 
//
// 
//输入：temperatures = [73,74,75,71,69,72,76,73]
//输出：[1,1,4,2,1,1,0,0]
// 
//
// 示例 2： 
//
// 
//输入：temperatures = [30,40,50,60]
//输出：[1,1,1,0]
// 
//
// 示例 3： 
//
// 
//输入：temperatures = [30,60,90]
//输出：[1,1,0] 
//
// 
//
// 提示： 
//
// 
// 1 <= temperatures.length <= 10⁵ 
// 30 <= temperatures[i] <= 100 
// 
//
// 
//
// 
// 注意：本题与主站 739 题相同： https://leetcode-cn.com/problems/daily-temperatures/ 
//
// Related Topics 栈 数组 单调栈 👍 107 👎 0


package LeetCode.editor.cn;


import java.util.ArrayDeque;
import java.util.Deque;

/**
 * @author ldltd
 * @date 2025-02-11 15:12:19
 * @description LCR 038.每日温度
 
 */
 
public class IIQa4I {
    public static void main(String[] args) {
    //测试代码
    IIQa4I fun = new IIQa4I();
    Solution solution= fun.new Solution();
    
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Deque<int []> st=new ArrayDeque<>();
        int length = temperatures.length;
        int [] res=new int[length];
        for (int i = 0; i < length; i++) {
            while (!st.isEmpty()&&st.peek()[0]<temperatures[i]){
                int[] pop = st.pop();
                res[pop[1]]=i-pop[1];
            }
            st.push(new int[]{temperatures[i],i});
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
